package com.example.jbmsuppliers.sinopec.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.TabHost;

import com.example.jbmsuppliers.R;

/**
 * Created by 家帮忙 on 2017/1/12.
 */

public class AnimationTabHost extends TabHost {
    /** 记录是否打开动画效果 */
    private boolean isOpenAnimation;
    /** 记录当前标签页的总数 */
    private int mTabCount;
    private Animation slideLeftIn;// 从屏幕左边进来
    private Animation slideLeftOut;// 从屏幕左边出去
    private Animation slideRightIn;// 从屏幕右边进来
    private Animation slideRightOut;// 从屏幕右边出去


    public AnimationTabHost(Context context, AttributeSet attrs) {
        super(context, attrs);
        /** 初始化默认动画 */
        slideLeftIn = AnimationUtils.loadAnimation(context,
                R.anim.common_slide_left_in);
        slideLeftOut = AnimationUtils.loadAnimation(context,
                R.anim.common_slide_left_out);
        slideRightIn = AnimationUtils.loadAnimation(context,
                R.anim.common_slide_right_in);
        slideRightOut = AnimationUtils.loadAnimation(context,
                R.anim.common_slide_right_out);
                isOpenAnimation = false;// 动画默认关闭




    }
    /**
     * 设置是否打开动画效果
     *
     * @param isOpenAnimation
     *            true：打开
     */
    public void setOpenAnimation(boolean isOpenAnimation) {
        this.isOpenAnimation = isOpenAnimation;
    }

    @Override
    public void addTab(TabSpec tabSpec) {
        mTabCount++;
        super.addTab(tabSpec);
    }
    // 重写setCurrentTab(int index) 方法，这里加入动画！关键点就在这。
    @Override
    public void setCurrentTab(int index) {
        int mCurrentTab = getCurrentTab();
        if (null!=getCurrentView()){
            // 第一次设置 Tab 时，该值为 null。
            if (isOpenAnimation) {
                // 离开的页面
                // 切换到右边的界面，从左边离开
                if (index > mCurrentTab) {
                    getCurrentView().startAnimation(slideLeftOut);
                }
                // 切换到左边的界面，从右边离开
                else if (index < mCurrentTab) {
                    getCurrentView().startAnimation(slideRightOut);
                }


            }

        }

// 设置当前页
        super.setCurrentTab(index);
        if (isOpenAnimation) {
            // 当前页进来是动画
            // 切换到右边的界面，从右边进来
            if (index > mCurrentTab) {
                getCurrentView().startAnimation(slideRightIn);
            }
            // 切换到左边的界面，从左边进来
            else if (index < mCurrentTab) {
                getCurrentView().startAnimation(slideLeftIn);
            }}
    }
}
